package com.zb.store.service;

import com.zb.entity.AccounLoginInfo;
import com.zb.entity.ZjStoreInboundOrderSpare;
import com.zb.vo.*;

import java.util.List;
import java.util.Map;

/**
 * 入库单接口类
 * @Author WEN
 * @Date 2024/1/12 0012
 **/
public interface ConStoreInboundService {

    /**
     * 保存或保存并审核入库单
     * @param loginInfo 登录信息
     * @param submitType 提交类型：1-保存，2-保存并审核
     * @param inboundVo 入库信息
     */
    void save(AccounLoginInfo loginInfo, String submitType, ZjStoreInboundOrderSpare inboundOrderSpare, StoreInboundVo inboundVo);

    /**
     * 获取入库列表
     * @param custAccId 商家ID
     * @param selectVo 搜索条件
     * @return
     */
    Map<String, Object> getList(Long custAccId, StoreOutboundListSelectVo selectVo);

    /**
     * 根据入库单ID获取入库单详情
     * @param id 入库单ID
     * @return
     */
    StoreInboundDetailVo getInboundDetail(Long id);

    /**
     * 根据入库单ID获取入库单详情物料
     * @param id
     * @return
     */
    List<OutInboundMaterialVo> getInboundDetailMaterial(Long id);

    /**
     * 确认入库
     * @param loginInfo
     * @param id 入库单ID
     * @param logisticsVo
     */
    void saveSureInbound(AccounLoginInfo loginInfo, Long id, StoreInboundLogisticsVo logisticsVo);

    /**
     * 作废入库单
     * @param loginInfo
     * @param id 入库单ID
     * @param remark 作废备注
     */
    void cancelStoreInbound(AccounLoginInfo loginInfo, Long id, String remark);

    /**
     * 驳回入库单
     * @param loginInfo
     * @param id 入库单ID
     * @param remark 驳回备注
     */
    void rejectInbound(AccounLoginInfo loginInfo, Long id, String remark);
}
